import functools
# @app.route('xxx') #endpoint默认等于login
# def login():
#     pass

def auth(func):
    # functools.wraps 是 Python 标准库 functools 模块中的一个装饰器
    # 作用是保留被装饰函数的元数据（如函数名，文档字符串等），避免被装饰后的函数丢失这些信息
    # 通常，当你使用装饰器包装一个函数时，原函数的一些属性（如 __name__、__doc__ 等）会丢失
    # 如果你希望保留这些元数据，functools.wraps 就非常有用。
    @functools.wraps(func)
    # 它接受任意数量的位置参数 *args 和关键字参数 **kwargs，并调用原始函数 func
    def inner(*args, **kwargs):
        return func(*args, **kwargs)
    return inner
# 在login函数上应用@auth装饰器意味着login函数将被auth装饰，实际上是将login替换成了inner函数
# 所以login()现在其实是inner()函数
@auth
def login():
    pass

print(login.__name__)